package org.sn.jdish.example.regular;

import java.util.regex.Pattern;

/**
 * 正则表达式
 * 
 * @author snzigod@hotmail.com
 *
 */
public class RegexUtils {

	public enum RegexEnum {
		/**
		 * 验证电子邮箱
		 */
		EMAIL("\\w+@\\w+\\.[a-z]+(\\.[a-z]+)?", "验证电子邮箱"),
		/**
		 * 验证身份证号码
		 */
		IDCARD("[1-9]\\d{13,16}[a-zA-Z0-9]{1}", "验证身份证号码"),
		/**
		 * 验证手机号码
		 */
		MOBILE("(\\+\\d+)?1[34578]\\d{9}$", "验证手机号码"),
		/**
		 * 验证固定电话号码
		 */
		PHONE("(\\+\\d+)?(\\d{3,4}\\-?)?\\d{7,8}$", "验证固定电话号码"),
		/**
		 * 验证整数（正整数和负整数）
		 */
		DIGIT("\\-?[1-9]\\d+", "验证整数（正整数和负整数）"),
		/**
		 * 验证整数和浮点数
		 */
		DECIMALS("\\-?[1-9]\\d+(\\.\\d+)?", "验证整数和浮点数"),
		/**
		 * 验证空白字符
		 */
		BLANK("\\s+", "验证空白字符"),
		/**
		 * 验证中文
		 */
		CHINESE("^[\u4E00-\u9FA5]+$", "验证中文"),
		/**
		 * 验证日期（年月日）
		 */
		DAY("[1-9]{4}([-./])\\d{1,2}\\1\\d{1,2}", "验证日期（年月日）"),
		/**
		 * 验证URL地址
		 */
		URL("", "验证URL地址"),
		/**
		 * 验证中国邮政编码
		 */
		POSTCODE("[1-9]\\d{5}", "验证中国邮政编码");

		private String value;
		private String desc;

		private RegexEnum(String value, String desc) {
			this.value = value;
			this.desc = desc;
		}

		public String getValue() {
			return value;
		}

		public void setValue(String value) {
			this.value = value;
		}

		public String getDesc() {
			return desc;
		}

		public void setDesc(String desc) {
			this.desc = desc;
		}

	}

	public static boolean check(RegexEnum regex, String input) {
		return check(regex.getValue(), input);
	}

	public static boolean check(String regex, String input) {
		return Pattern.matches(regex, input);
	}

}
